package com.cw.jeeyt.service.intf.api;

import java.util.List;

import com.cw.jeeyt.common.Order;
import com.cw.jeeyt.service.bo.api.ApiDataEntryBo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 接口字段信息业务接口
  * @author chenw
 * @version 1.0.0
 */
public interface ApiDataEntryService {
    /**
     * 查询所有接口字段信息列表信息
     */
    List<ApiDataEntryBo> queryApiDataEntryList() throws Exception;

    /**
     * 删除接口字段信息
     *
     * @param apiDataEntryBo
     */
    void delete(ApiDataEntryBo apiDataEntryBo) throws Exception;

    /**
     * 更新接口字段信息
     *
     * @param apiDataEntryBo
     */
    void update(ApiDataEntryBo apiDataEntryBo) throws Exception;

    /**
     * 更新接口字段信息不为空的字段
     *
     * @param apiDataEntryBo
     */
    void updateSelective(ApiDataEntryBo apiDataEntryBo) throws Exception;

    /**
     * 根据主键查询接口字段信息
     *
     * @return
     */
    ApiDataEntryBo getApiDataEntryById(Long id) throws Exception;

    /**
     * 新增接口字段信息
     *
     * @param apiDataEntryBo
     * @return
     */
    Integer insert(ApiDataEntryBo apiDataEntryBo) throws Exception;

    /**
     * 新增接口字段信息不为空的字段
     *
     * @param apiDataEntryBo
     * @return
     */
    Integer insertSelective(ApiDataEntryBo apiDataEntryBo) throws Exception;

    /**
     * 分页查询接口字段信息
     *
     * @param apiDataEntryBo
     * @param pageNo
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<ApiDataEntryBo> queryByPage(ApiDataEntryBo apiDataEntryBo, Integer pageNo, Integer pageSize, Order order)
    throws Exception;

    /**
     * 同步接口字段信息
     *
     * @param databaseId
     * @throws Exception
     */
    void syncDataEntry(String databaseId) throws Exception;

    /**
     * 批量新增接口字段信息
     *
     * @param apiDataEntryList
     * @throws Exception
     */
    void insertBat(List<ApiDataEntryBo> apiDataEntryList) throws Exception;

    /**
     * 根据字段编码、字段名称、字段类型查询接口字段信息
     *
     * @param columnCode
     * @param columnName
     * @param columnSqlType
     * @return
     */
    ApiDataEntryBo queryByCondition(String columnCode, String columnName, String columnSqlType);

    /**
     * 分页查询接口字段信息导入列表
     *
     * @param apiDataEntryBo
     * @param start
     * @param length
     * @param order
     * @param objId
     * @return
     * @throws Exception
     */
    PageInfo<ApiDataEntryBo> queryImortByPage(ApiDataEntryBo apiDataEntryBo, Integer start, Integer length, Order order,
        Long objId) throws Exception;
}
